package iso 
{
	import flash.geom.*;
	
	/**
	 * 等角投影的工具类
	 * @author StefanieKaka
	 */
	public final class IsoUtils 
	{
		/// 1.2247
		public static const Y_CORRECT : Number = Math.cos(-Math.PI / 6) * Math.SQRT2;
		
		/**
		 * 世界坐标 转换 屏幕坐标
		 * @param	pos 世界坐标系的点
		 * @return 屏幕坐标系的点
		 */ 
		public static function isoToScreen(pos : Point3D) : Point
		{
			var screenX : Number = pos.x - pos.z;
			var screenY : Number = pos.y * Y_CORRECT + (pos.x + pos.z) * 0.5;
			return new Point(screenX, screenY);
		}
		
		/**
		 * 屏幕坐标 转换 世界坐标
		 * @param	point 屏幕坐标系的点
		 * @return 世界坐标系的点
		 */
		public static function screenToIso(point : Point) : Point3D
		{
			var xpos : Number = point.y + point.x * 0.5;
			var ypos : Number = 0;
			var zpos : Number = point.y - point.x * 0.5;
			return new Point3D(xpos, ypos, zpos);
		}
		
	}

}

































///////////////////////////////////////////////////////////////////////////////////////////////////
// end file